package com.chaopei.review;

/**
 * @Author Corday 天涯
 * @Date 2022/3/15 9:19
 * 多线程模拟接力赛场景
 */
public class RelayThread implements Runnable {
//   初始化跑的distance
    private  int distance=1000;
    @Override
    public void run() {
        while (true){
            go();
            if(distance<=100){
                break;
            }
        }
    }
// 实现每个选手跑一百米,同时每跑10米输出数据
    public synchronized void go(){//同步锁确保每个选手跑完100米
        for(int i=0;i<100;i+=10){
            System.out.println(Thread.currentThread().getName()+"跑了:"+(i+10)+"米");
            //跑的时间
            int time=(int)(Math.random()*50)+50;
            try {
                Thread.sleep(time);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }//for
        //剩余的距离
        distance -=100;
    }
}
////测试一下
class  RelayTest{
    public static void main(String[] args) {
        RelayThread rt = new RelayThread();
        //创建五个匿名的子线程对象,并给其线程命名
        for(int i=1;i<=5;i++){
            new Thread(rt,"选手"+i).start();
        }
    }//main
}